package cn.edu.cug.cs.gtl.docsrv.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.io.File;

/**
 * SHP和IMG的管理器类型可以是
 * hdfs ftp sdb rdb1 rdb2
 * 中的一种；
 *
 * DOC和RAW的管理器类型可以是
 * hdfs ftp rdb1 rdb2
 * 中的一种；
 *
 * TXT的管理器类型可以是
 * hdfs ftp rdb1 rdb2 solr
 * 中的一种；
 */
@Component
@ConfigurationProperties(prefix = "managers")
public class ManagerConfig {
    private String shpManagerType;
    private String imgManagerType;
    private String rawManagerType;
    private String docManagerType;
    private String txtManagerType;
    private String localDataRoot;

    /**
     * 获取系统配置的本地文件目录，其判断顺序为：
     * 1）系统变量LOCAL_DATA_ROOT
     * 2）判断application.yml中的
     *    managers:
     *        local-data-root: D:/git/data/docsrv_data
     * 3）如果上述两个都不行，则根据操作系统构建默认的目录
     *    Windows:   C:/data
     *    Linux或MacOS： ~/data
     * @return
     */
    public String getLocalDataRoot() {

        String str = System.getenv("LOCAL_DATA_ROOT");
        if(str!=null &&  !str.isEmpty()) {
            localDataRoot=str;
        }
        else{
            if(localDataRoot!=null && !localDataRoot.isEmpty()){
                File f = new File(localDataRoot);
                boolean b= true;
                //判断是否存在，不存在就试着创建
                if(!f.exists()){
                    b=f.mkdirs();
                }
                //不存在，并且创建失败，则采用默认目录
                if(b==false) {
                    localDataRoot = System.getProperty("user.home");
                }
            }
            else{
                localDataRoot = System.getProperty("user.home");
            }
        }
        return localDataRoot;
    }


    public void setLocalDataRoot(String localDataRoot) {
        this.localDataRoot = localDataRoot;
    }

    public String getShpManagerType() {
        return shpManagerType;
    }

    public void setShpManagerType(String shpManagerType) {
        this.shpManagerType = shpManagerType;
    }

    public String getImgManagerType() {
        return imgManagerType;
    }

    public void setImgManagerType(String imgManagerType) {
        this.imgManagerType = imgManagerType;
    }

    public String getRawManagerType() {
        return rawManagerType;
    }

    public void setRawManagerType(String rawManagerType) {
        this.rawManagerType = rawManagerType;
    }

    public String getDocManagerType() {
        return docManagerType;
    }

    public void setDocManagerType(String docManagerType) {
        this.docManagerType = docManagerType;
    }

    public String getTxtManagerType() {
        return txtManagerType;
    }

    public void setTxtManagerType(String txtManagerType) {
        this.txtManagerType = txtManagerType;
    }


    public String getLocalShpDataRoot() {
        return localDataRoot+"/shp";
    }

    public String getLocalImgDataRoot() {
        return localDataRoot+"/img";
    }

    public String getLocalTxtDataRoot() {
        return localDataRoot+"/txt";
    }

    public String getLocalRawDataRoot() {
        return localDataRoot+"/raw";
    }

    public String getLocalDocDataRoot() {
        return localDataRoot+"/doc";
    }

    public String getLocalSeqDataRoot() {
        return localDataRoot+"/doc";
    }

}
